
 1000  *SAVE S.DP18 PACK & UNPACK
 1010  *-------------------------------
 1020  *     ADDRESSES INSIDE APPLESOFT
 1030  *-------------------------------
 1040  AS.OVRFLW .EQ $E8D5    OVERFLOW ERROR
 1050  *--------------------------------
 1060  *      PAGE ZERO USAGE
 1070  *-------------------------------
 1080  PNTR   .EQ $5E,5F
 1090  *-------------------------------
 1100  *      MOVE (Y,A) INTO DAC AND UNPACK
 1110  *--------------------------------
 1120  MOVE.YA.DAC
 1130         STA PNTR
 1140         STY PNTR+1
 1150         LDY #9       MOVE 10 BYTES
 1160  .1     LDA (PNTR),Y
 1170         STA DAC,Y
 1180         DEY
 1190         BPL .1
 1200         INY          Y=0
 1210         STY DAC.EXTENSION
 1220         LDA DAC.EXPONENT
 1230         STA DAC.SIGN
 1240         AND #$7F
 1250         STA DAC.EXPONENT
 1260         RTS
 1270  *--------------------------------
 1280  *      MOVE (Y,A) INTO ARG AND UNPACK
 1290  *--------------------------------
 1300  MOVE.YA.ARG
 1310         STA PNTR
 1320         STY PNTR+1
 1330         LDY #9       MOVE 10 BYTES
 1340  .1     LDA (PNTR),Y
 1350         STA ARG,Y
 1360         DEY
 1370         BPL .1
 1380         INY          Y=0
 1390         STY ARG.EXTENSION
 1400         LDA ARG.EXPONENT
 1410         STA ARG.SIGN
 1420         AND #$7F
 1430         STA ARG.EXPONENT
 1440         RTS
 1450  *--------------------------------
 1460  *      PACK AND MOVE DAC TO (Y,A)
 1470  *--------------------------------
 1480  MOVE.DAC.YA
 1490         STA PNTR
 1500         STY PNTR+1
 1510         JSR ROUND.DAC
 1520         LDA DAC.EXPONENT
 1530         BIT DAC.SIGN
 1540         BPL .1       POSITIVE
 1550         ORA #$80     NEGATIVE
 1560  .1     LDY #0
 1570  .2     STA (PNTR),Y
 1580         INY
 1590         LDA DAC,Y
 1600         CPY #10
 1610         BCC .2
 1620         RTS
 1630  *--------------------------------
 1640  *      ROUND DAC BY EXTENSION
 1650  *--------------------------------
 1660  ROUND.DAC
 1670         LDA DAC.EXTENSION
 1680         CMP #$50     COMPARE TO .5
 1690         BCC .3       NO NEED TO ROUND
 1700         LDY #8
 1710         SED          DECIMAL MODE
 1720  .1     LDA #0
 1730         ADC DAC.HI,Y
 1740         STA DAC.HI,Y
 1750         BCC .2       NO NEED FOR FURTHER PROPAGATION
 1760         DEY
 1770         BPL .1       ...MORE BYTES
 1780         INC DAC.EXPONENT
 1790         BMI .4       ...OVERFLOW
 1800         LDA #$10     .999...9 ROUNDED TO 1.000...0
 1810         STA DAC.HI
 1820  .2     CLD
 1830  .3     LDA #0
 1840         STA DAC.EXTENSION
 1850         RTS
 1860  .4     CLD
 1870         JMP AS.OVRFLW
 1880  *--------------------------------

